// pages/cart/cart.js
const db = wx.cloud.database()
const $ = db.command.aggregate
const app = getApp()

Page({

  /**
   * 页面的初始数据
   */
  data: {
    tabs:[],
    show:false,
    money:0,//总价
    num:0,//数量
    cart:[],//购物车数据
    foodlist:[],
    currentIndex:0,
    zhuohao:''

    
  },
  //点击分类列表
  selectTab(e){
    let cart = wx.getStorageSync('cart')||[]
    this.setData({
      currentIndex:e.currentTarget.dataset.index
    })
    if (this.data.currentIndex == 0) {
      db.collection('food').get()
        .then(res=>{
          console.log('搜索成功',res);
          let list = res.data
          if(list&&list.length>0){
            list.forEach(item => {
              item.num = 0;
              cart.forEach(cart => {
                if (cart._id == item._id) {
                  item.num = cart.num ? cart.num : 0;
                }
              });
            });
            this.setData({
              foodlist:list
            })
          }
        })
    } else {
      db.collection('food').where({
        fenlei:this.data.tabs[this.data.currentIndex]._id
      }).get()
      .then(res=>{
        console.log('搜索成功',res);
        let list = res.data
        console.log(list);
        if(list&&list.length>0){
          list.forEach(item => {
            item.num = 0;
            cart.forEach(cart => {
              if (cart._id == item._id) {
                item.num = cart.num ? cart.num : 0;
              }
            });
          });
          this.setData({
            foodlist:list
          })
        }
      })
    }
  },
    //加数量
    jia(e){
      let id = e.currentTarget.dataset.id
      // console.log("点击了加",e.currentTarget.dataset.id);
      let list = this.data.foodlist
      let money = this.data.money
      let num = this.data.num
      let cart = this.data.cart
      // console.log("当前菜品列表",list);
      list.forEach(item=>{//遍历数组
        // console.log("遍历了",list);
        if(item._id==id){//如果遍历到_id=id，则执行
          item.num+=1
            money+=item.price,
            num+=1
            if(cart&&cart.length>0){//判断购物车里面是否有这条菜品的数据如果有数量+1，否则添加到购物车
              var cartitem = cart.find((cart) => {
                return cart._id == id;
            })
            if(!cartitem){//判断购物车里面是否有这条菜品的数据如果有数量+1，否则添加到购物车
              cart.push(item)
            }
            }else{
              cart.push(item)
            }
        }
      })
      this.setData({
        foodlist:list,
        money:money,
        num:num,
        cart:cart
      })
      wx.setStorageSync('cart', cart)//将购物车数据存入缓存
      console.log("添加购物车的数据",cart);
    },
    //减数量
    jian(e){
      let id = e.currentTarget.dataset.id
      // console.log("点击了减",e.currentTarget.dataset.id);
      let list = this.data.foodlist
      let money = this.data.money
      let num = this.data.num
      let cart = this.data.cart
      // console.log("当前菜品列表",list);
      list.forEach(item=>{
        // console.log("遍历了",list);
        if(item._id==id){
          if(item.num>0){
            item.num-=1
              money-=item.price,
              num-=1
              if(cart&&cart.length>0){//判断购物车里面是否有这条菜品的数据如果有数量+1，否则添加到购物车
                var index = cart.findIndex((cart) => {//findIndex()方法返回数组中满足提供的测试函数的第一个元素的索引。否则返回-1。
                  return cart._id == id;
              })
              console.log("下标",index);
              if(item.num==0){//如果点击减少到数量为0，则移除cart数组
                // cart.pop(cartitem)//bug
                cart.splice(index,1)//根据下标删除数组中的元素
                if(this.data.cart.length==0){
                  this.setData({
                    show:false
                  })
                }
              }
              }
          }else{
            wx.showToast({
              icon:'none',
              title: '数量不能小于0',
            })
          }
        }
      })
      this.setData({
        foodlist:list,
        money:money,
        num:num,
        cart:cart
      })
      wx.setStorageSync('cart', cart)
      console.log("减少购物车的数据",cart);
    },
    cartshow(){
      if(this.data.cart.length>0){
        this.setData({
          show:true
        })
      }else{
        wx.showToast({
          icon:'none',
          title: '你还没有添加购物车',
        })
      }
      
    },
    cartnoshow(){
        this.setData({
          show:false
        })
    },
    //清空购物车
    clearcart(){
      wx.removeStorageSync('cart')//清除购物车缓存
      let foodlist = this.data.foodlist
      foodlist.forEach(item=>{
        item.num=0
      })
      this.setData({
        cart:[],
        foodlist:foodlist,
        money:0,
        num:0,
        show:false
      })
    },
    chooseadress(){
      let that = this 
      wx.chooseAddress({
        success (res) {
          let zhuohao =res.countyName+res.detailInfo
          app.globalData.zhuohao = zhuohao
          console.log("地址",app.globalData.zhuohao);
          that.setData({
            zhuohao:zhuohao
          })
        }
      })
      
    },

    //购买
    buy(){
      let dizhi = this.data.zhuohao
      let cart = this.data.cart
      if(cart.length>0){
        if(!dizhi){
          wx.showToast({
            icon:'none',
            title: '请在购物车选择收货地址',
          })
          return
        }
        wx.navigateTo({
          url: '/pages/buy/buy',
        })
      }else{
        wx.showToast({
          icon:'none',
          title: '你还没有添加购物车',
        })
      }
      
    },
  /**
   * 生命周期函数--监听页面加载
   */
  onLoad: function (options) {
    //按字段值分组
    db.collection('food').aggregate()
      .group({
        _id: '$fenlei',
      })
      .end()
      .then(res=>{
        let list = res.list
        console.log('分类',res.list);
        list.unshift({_id: "全部商品"});
        this.setData({
          tabs:list
        })
        db.collection('food').get()
        .then(res=>{
          console.log('搜索成功',res);
          let list = res.data
          if(list&&list.length>0){
            list.forEach(item=>{
              item.num=0
            })
            this.setData({
              foodlist:list
            })
          }
        })
      })
      
  },

  /**
   * 生命周期函数--监听页面初次渲染完成
   */
  onReady: function () {

  },

  /**
   * 生命周期函数--监听页面显示
   */
  onShow: function () {

  },

  /**
   * 生命周期函数--监听页面隐藏
   */
  onHide: function () {

  },

  /**
   * 生命周期函数--监听页面卸载
   */
  onUnload: function () {

  },

  /**
   * 页面相关事件处理函数--监听用户下拉动作
   */
  onPullDownRefresh: function () {

  },

  /**
   * 页面上拉触底事件的处理函数
   */
  onReachBottom: function () {

  },

  /**
   * 用户点击右上角分享
   */
  onShareAppMessage: function () {

  }
})